package JAVASE521;

import java.util.Scanner;

public class Studenttest {
    public static void main(String[] argc){
        Student s1=new Student(11001,"张三",19);
        Student s2=new Student(11002,"李四",21);
        Student s3=new Student(11003,"王五",23);
        Student[] arr=new Student[3];
        arr[0]=s1;
        arr[1]=s2;
        arr[2]=s3;
        //添加一个学生
        Student s4=new Student();
        System.out.println("请输入待添加学生学号：");
        Scanner sc=new Scanner(System.in);
        //判断该学号是否存在
        while (true) {
            boolean flag = true;
            s4.setNumber(sc.nextInt());
            for (int i = 0; i < arr.length; i++) {
                if (s4.getNumber() == arr[i].getNumber()) {
                    flag = false;
                    break;
                } else if (s4.getNumber() != arr[i].getNumber()) {
                    flag = true;
                }
            }
            if (!flag) {
                System.out.println("该学号已存在，请重新输入：");
            } else if (flag) {
                break;
            }
        }
        //输入学生姓名与年龄
        System.out.println("请输入学生姓名：");
        s4.setName(sc.next());
        System.out.println("请输入学生年龄：");
        s4.setAge(sc.nextInt());
        //更新对象数组
        Student[] ARR=newarr1(arr);
        ARR[ARR.length-1]=s4;
        //遍历添加完的学生信息
        for (int i = 0; i < ARR.length; i++) {
            System.out.println(ARR[i].getNumber()+ARR[i].getName()+ARR[i].getAge());
        }
        //删除学生并遍历学生信息
        System.out.println("请输入删除学生的ID：");
        int ID=sc.nextInt();
        delete(ID,ARR);
        //查询学生并增加年龄
        System.out.println("请输入要查询的学号：");
        int id=sc.nextInt();
        select(id,ARR);
    }

    //生成新数组
    public static Student[] newarr1(Student[] arr){
        boolean f1=true;
        Student[] newarr = new Student[arr.length];
        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != null) f1 = false;
        }
        //未满
        if (f1==true) {
            for (int i = 0; i < arr.length; i++) {
                newarr[i]=arr[i];
            }
        }
        //满了
        else {
            newarr = new Student[arr.length + 1];
            for (int i = 0; i < arr.length; i++) {
                newarr[i] = arr[i];
            }
        }
        return newarr;
    }

    //删除学生
    public static void delete(int id,Student[] ARR){
        //新数组用来表示删除后的数组
        Student[] newarr = new Student[ARR.length];
        //查询是否存在
        boolean flag=true;
        int i=0;
        for (i = 0; i < ARR.length; i++) {
            //如果有该学号
            if (ARR[i].getNumber() == id) {
                flag=false;
                break;
            }
        }
        if (flag){
            System.out.println("该学号不存在，删除失败！");
        }else if(!flag){
            //是最后一位
            if (i == ARR.length - 1) {
                newarr = new Student[ARR.length - 1];
                for (int i1 = 0; i1 < newarr.length; i1++) {
                    newarr[i1]=ARR[i1];
                }
            }
            //不是最后一位
            else {
                newarr = new Student[ARR.length - 1];
                //不是第一位
                if(i!=0){
                    for (int i1=0;i1<i;i1++){
                        newarr[i1]=ARR[i1];
                    }
                    for (int i1=i;i1< newarr.length;i1++){
                        newarr[i1]=ARR[i1+1];
                    }
                }
                //第一位
                else {
                    for (int i1 = 0; i1 < newarr.length; i1++) {
                        newarr[i1]=ARR[i1+1];
                    }
                }

            }
            for (int i1 = 0; i1 < newarr.length; i1++) {
                System.out.println(newarr[i1].getNumber()+newarr[i1].getName()+newarr[i1].getAge());
            }
        }

    }

    //查询学生学号
    public static void select(int ID,Student[] ARR){
        //查询是否存在
        boolean flag=false;
        int i=0;
        for (i = 0; i < ARR.length; i++) {
            //如果有该学号
            if (ARR[i].getNumber() == ID) {
                flag=true;
                break;
            }
        }if(flag) {
            ARR[i].setAge(ARR[i].getAge()+1);
            System.out.println("年龄已改为"+ARR[i].getAge());
        }
        else {
            System.out.println("该学号不存在");
        }

    }
}
